package Set集合;

import java.util.HashSet;

/*
* HashSet集合的特点
* 底层数据结构是hash表
* 对集合的迭代顺序不做任何保证，也就是说，不保证存储和取出的元素顺序一致
* 没有带索引的方法，所以不能使用for循环遍历
* 由于是set集合，所以是不包含重复元素的集合
* */
/*
* 思考：HashSet集合是如何保证元素唯一性的
* 1.根据对象的哈希值计算存储位置
* 如果当前位置没有元素则直接存入
* 如果当前位置有元素存在，则进入第二步
* 2.当前元素的元素和已经存在的元素比较哈希值
* 如果哈希值不同，则将当前元素进行存储
* 如果哈希值相同，则进入第三步
* 3.通过equals()方法比较两个元素的内容
* 如果内容不相同，则将当前元素进行存储
* 如果内容相同，则不存储当前元素
* */
public class HashSet的集合概述和特点 {
    public static void main(String[] args) {
        /*创建集合对象*/
        HashSet<String> hs = new HashSet<>();
        /*添加元素*/
        hs.add("hello");
        hs.add("world");
        hs.add("java");
        hs.add("world");
        /*遍历*/
        for (String s: hs) {
            System.out.println(s);
        }
    }
}